<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>包装类</title>
</head>
<body>
    
</body>
</html>
<script>
    /*
        基本数据类型
            String Number Boolean Null Undefined

        引用数据类新
            Object

        在JS中为我们提供了三个包装类，通过这三个包装类可以将基本数据类型的数据转换为对象
            String()
                - 可以将基本数据类型字符串转换为String对象
            Number()
                - 可以将基本数据类型的数字转换为Number对象
            Boolean()
                - 可以将基本数据类型的布尔值转换为Boolean对象
            但是注意： 我们在实际应用中不会使用基本数据类型的对象，
                如果使用基本数据类型的对象，在做一些比较时可能会带来一些不可预期的结果

    */

    // 创建一个 Number类型的对象
    // num = 3;
    var num = new Number(3);
    var num2 = new Number(3);
    var str = new String("hello");
    var bool = new Boolean(true);

    console.log(num == num2);
    console.log(typeof str);
    console.log(typeof bool);

    // 向num中添加一个属性
    num.hello = "abcd"
    console.log(num.hello);

    /*
        方法和属性只能添加给对象，不能添加给基本数据类型
            当我们对一些基本数据类型的值去调用属性和方法时，
                浏览器会临时使用包装类将其转换为对象，然后在调用对象的属性和方法
                调用完以后，在将其转换为 基本数据类型
    */

    var a = 123; 
    // a = a.toString();
    // a.hello = "你好";
    console.log(a.hello="你好");
    console.log(a);
    console.log(typeof a);
    


</script>